/*
package 数据结构和算法.有向图API设计;


public class Digraph {
    //顶点数目
    private final int V;
    //边的数目
    private int E;
    //邻接表
    private Queue<Integer>[] adj;

    public Digraph(int V) {
        //初始化顶点数量
        this.V =V;
        //初始化边的数量
        this.E=0;
        //初始化邻接表
        this.adj = new Queue[V];
        for (int i = 0; i <adj.length ; i++) {
            adj[i]=new Queue<Integer>();
        }
    }

    //获取顶点的数目
    public int V(){
        return V;
    }

    //获取边的数目
    public int E(){
        return E;
    }
    //向有向图添加一条边v->w
    public void addEdge(int v,int w){
        adj[V].enqueue(w);
        E++;
    }
    //获取由v指出的边所链接的所有顶点
    public Queue<Integer> adj(int v){
        return adj[v];
    }
    //改图的 反向图
    private  Digraph reverse(){
        Digraph r = new Digraph(V);
        for (int v = 0; v <V ; v++) {
            for (Integer w:adj[v]){
                r.addEdge(w,v);
            }
        }
        return r;
    }
}
*/
